package June;

import java.util.Random;

public class Test02Ascii {
    public static void main(String[] args) {
        //ASCII码，65-90是大写字母，97-122是小写字母
        char[] code = new char[52];//大写字母加小写字母一共52,再加上10个数字=62


        Random ran = new Random();
        //将数字0-9添加到数组arr当中去，方便使用随机数取值
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i;
        }

        //将52个字母符号添加到code数组当中，类型为char
        for (int i = 0; i < code.length; i++) {
            if (i < 26) {
                //从97开始ascii码是小写字母，让i从0增加到
                code[i] = (char) (97 + i);
            } else {
                //从65开始是大写英文字母,并且此时的i已经是26了，所以需要减去26，来确保对应的数字在ascii表中对应大写字母
                code[i] = (char) (65 + i - 26);
            }
        }

        //将char数据类型的code以及0-9数字添加到str数组当中，类型为string
        String[] str = new String[62];
        int temp = -1;
        for (int i = 0; i < str.length; i++) {
            if (i < code.length) {
                str[i] = String.valueOf(code[i]);
            } else {
                temp++;
                if (temp<10){
                    str[i]= String.valueOf(arr[temp]);
                }
            }
        }


//将数组str的每一项添加到s数组当中
//        for (String s : str) {
//            System.out.print(s + " ");
//        }

        //随机抽取字母加数字组成验证码,ver_code为验证码长度
        String[] ver_code = new String[4];
        for (int i = 0; i < ver_code.length; i++) {
            //生成随机数，范围为str数组的长度
            int result = ran.nextInt(str.length);
            ver_code[i] = String.valueOf(str[result]);
        }
//生成随机数
        System.out.print("[");
        for (int i = 0; i < ver_code.length; i++) {
            if (i < ver_code.length - 1) {
                System.out.print(ver_code[i] + ",");
            } else {
                System.out.print(ver_code[i]);
            }

        }
        System.out.print("]");

    }
}
